package jp.co.katagaki.crossword.puzzle;

import jp.co.katagaki.util.Assertions;

import org.apache.commons.lang.StringUtils;

/**
 * クロスワードを解くためのクラス。
 *
 * @author naotake
 */
public class CrosswordPuzzleResolver {

    private final CrosswordPuzzle puzzle;

    /**
     * 指定したクラスワードを保持するインスタンスを生成する。
     *
     * @param puzzle
     *            クロスワード
     */
    public CrosswordPuzzleResolver(CrosswordPuzzle puzzle) {
        this.puzzle = puzzle;
    }

    /**
     * 保持するクロスワードを取得する。
     *
     * @return クロスワード
     */
    public CrosswordPuzzle getPuzzle() {
        return puzzle.clone();
    }

    /**
     * クロスワードを解答する。
     *
     * @param answer
     *            答え
     * @return 解答結果が正しい場合{@code true}
     */
    public boolean resolve(String answer) {
        Assertions.assertNotNull("答え", answer);

        return StringUtils.equals(answer, puzzle.getAnswer());
    }
}
